package com.cjkj.consumables.mapper;

import com.cjkj.consumables.domain.TMedicalConsumablesInfo;
import com.cjkj.consumables.domain.dto.ListDataParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 耗材信息Mapper接口
 * 
 * @author cjkj
 * @date 2025-10-11
 */
public interface TMedicalConsumablesInfoMapper 
{
    /**
     * 查询耗材信息
     * 
     * @param serialNumber 耗材编号
     * @return 耗材信息
     */
    TMedicalConsumablesInfo selectInfoBySerialNumber(String serialNumber);
    List<String> selectExistInfoBySerialNumbers(@Param("serialNumbers") List<String> serialNumbers);

    /**
     * 查询可分配的耗材信息
     * 状态为未分配且未使用的才能被分配
     * @param serialNumbers 耗材编号
     */
    List<String> selectDistributableDataBySerialNumbers(@Param("serialNumbers") List<String> serialNumbers);

    /**
     * 查询可回收的耗材信息
     * 状态为已分配且未使用的才能被回收
     * @param serialNumbers 耗材编号
     */
    List<String> selectRecyclableDataBySerialNumbers(@Param("serialNumbers") List<String> serialNumbers);

    /**
     * 查询耗材信息列表
     * 
     * @param param 耗材信息
     * @return 耗材信息集合
     */
    List<TMedicalConsumablesInfo> selectTMedicalConsumablesInfoList(ListDataParam param);

    /**
     * 新增耗材信息
     * 
     * @param tMedicalConsumablesInfo 耗材信息
     * @return 结果
     */
    int insertTMedicalConsumablesInfo(TMedicalConsumablesInfo tMedicalConsumablesInfo);
    int batchInsertTMedicalConsumablesInfo(@Param("tMedicalConsumablesInfos") List<TMedicalConsumablesInfo> tMedicalConsumablesInfos);

    /**
     * 修改耗材信息
     * 
     * @param tMedicalConsumablesInfo 耗材信息
     * @return 结果
     */
    int updateTMedicalConsumablesInfo(TMedicalConsumablesInfo tMedicalConsumablesInfo);

    /**
     * 删除耗材信息
     * 
     * @param id 耗材信息主键
     * @return 结果
     */
    int deleteTMedicalConsumablesInfoById(Long id);

    /**
     * 批量删除耗材信息
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteTMedicalConsumablesInfoByIds(Long[] ids);

    /**
     * 批量设置分配信息
     */
    int batchSetDistributeInfo(@Param("agentId") String agentId, @Param("serialNumbers") List<String> serialNumbers);
    int batchSetDistributeInfoByIds(@Param("agentId") String agentId, @Param("ids") List<String> ids);

    /**
     * 批量清空分配信息
     */
    int batchClearDistributeInfo(@Param("serialNumbers") List<String> serialNumbers);
    int batchClearDistributeInfoByIds(@Param("ids") String[] ids);
}
